/*Copyright (C) 2013-2020 LZE*/
#include<bits/stdc++.h>
#define INF 0x7f7f7f7f
using namespace std;
typedef long long ll;
int n;
class radixsort{
	private:
		struct str{
			string num;
			long long len;
		};
		queue<str>num[10];
		queue<str>Q;
		long long mlen=-1;
	public:
		void sort();
		template<class Typename>
		void push(Typename ss);
		string front();
		void pop();
};
void radixsort::sort(){
	for(long long i=1;i<=mlen;i++)
	{
		for(long long j=1;j<=n;j++){
			str front=Q.front();
			Q.pop();
			long long len=front.len;
			long long number=0;
			long long step=len-i;
			if(step>=0)number=front.num[step]-'0';
			num[number].push(front);
		}
		for(long long j=0;j<=9;j++){
			while(num[j].size()){
				str front=num[j].front();
				num[j].pop();
				Q.push(front);
			}
		}
	}
}
string radixsort::front(){
	return Q.front().num;
}
void radixsort::pop(){
	Q.pop();
}
template<class Typename>
void radixsort::push(Typename ss){
	string sstr=to_string(ss);
	str p;
	p.len=sstr.length();
	p.num=sstr;
	Q.push(p);
	mlen=max(mlen,p.len);
}
radixsort rs;
inline int rd() {
	int x=0;bool ntv=false;char c=getchar();
	while((c<'0'||c>'9')&&c!='-')c=getchar();if(c=='-')ntv=true;else x=(c^48);c=getchar();
	while(c>='0'&&c<='9') {x=x*10+(c^48);c=getchar();}return ntv?-x:x;
}
int main() {
	n=rd();
	for(int i=1;i<=n;i++){
		ll ss;cin>>ss;
		rs.push(ss);
	}
	rs.sort();
	for(int i=1;i<=n;i++){
		cout<<rs.front()<<" ";
		rs.pop();
	}
	return 0;
}
